Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
docker的安装
#通用安装
wget -qO- https://get.docker.com | sh
# centos7
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
yum install docker
# ubuntu
apt install docker.io
# debian
wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.03.0\~ce-0\~debian-stretch_amd64.deb
dpkg -i docker-ce_17.03.0\~ce-0\~debian-stretch_amd64.deb
卸载安装的docker
rpm list installed|grep docker
rpm -qa|grep docker
yum -y remove xxxxxxxx
rm -rf /var/lib/docker
设置不输入 sudo
sudo usermod -aG docker ${USER}
sudo service docker restart
sudo newgrp - docker
设置中国镜像
linux: 创建 /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
容器启动后又关闭
当 docker run -d nginx 时发现容器启动后立即关闭
原因
docker后台运行,就必须有一个前台进程,主线程结束,容器就会退出
改成: docker run -d -it nginx
连接容器
当 docker attach nginx 时,输入 exit 或 ctrl+D 终止容器
若依次输入 ctrl+P,ctrl+Q 则不会终止容器而只是退出链接
CMD - ENTRYPOINT
dockerfile 中 cmd 和 entrypoint 都只能设置一次
cmd : 当 docker run 附加命令时,不会执行cmd
entrypoint : 无论docker start restart run 一定会执行
若依次输入 ctrl+P,ctrl+Q 则不会终止容器而只是退出链接
volume磁盘挂载
docker volume create mysql_data
docker volume inspect mysql_data
当磁盘挂载不上是,需要关掉liunx的 seliunx
查看 seliunx 状态: sestate -v
3种方法: 1. setenforce 0
2.容器启动,添加--privileged=true
3. 修改 /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled